home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / brutil.arc / ATTR.ASM < prev    next >
Assembly Source File  |  1987-09-04  |  3KB  |  173 lines

  1. LF    EQU    0AH
  2. CR    EQU    0DH
  3.  
  4. CODE    SEGMENT
  5.     ASSUME    CS:CODE,DS:CODE,ES:CODE,SS:CODE
  6.     ORG    100H
  7. START:    JMP    L023C
  8. L014C    DB    'Syntax: ATTR [+A|-A] [+S|-S] [+H|-H] [+R|-R]   '
  9.     DB    '[drive:][path\]filename.ext',CR,LF
  10.     DB    '             Archive System  Hidden  Read-Only',CR,LF,LF
  11.     DB    'Note: if Vol flag is set, other flags can not be changed',CR,LF
  12.     DB    '$'
  13. L01C0    DB    'Needs DOS 2.0 +$'
  14. L01D6    DB    'Incorrect flag$'
  15. L01EB    DB    'Incorrect File Spec$'
  16. L0205    DB    9,' ,;=',CR
  17. L020B    DB    'ASHR',20H,4,2,1
  18. L0213    DB    '    $'
  19. L0218    DB    'Arc $'
  20.     DB    'Dir $'
  21.     DB    'Vol $'
  22.     DB    'Sys $'
  23.     DB    'Hid $'
  24.     DB    'R-O$'
  25. L0235    DB    0
  26. L0236    DB    0
  27. L0237    DB    0
  28. L0238    DW    0
  29. L023A    DW    0
  30. L023C:    MOV    AH,30H
  31.     INT    21H
  32.     CMP    AL,2
  33.     JNB    L024D
  34.     MOV    DX,OFFSET L01C0
  35. L0247:    MOV    AH,9
  36.     INT    21H
  37.     INT    20H
  38. L024D:    MOV    SI,81H
  39.     CLD
  40. L0251:    LODSB
  41.     MOV    DI,OFFSET L0205
  42.     MOV    CX,5
  43.     REPNZ    SCASB
  44.     JZ    L0251
  45.     MOV    DX,OFFSET L014C
  46.     CMP    AL,0DH
  47.     JZ    L0247
  48.     MOV    DI,OFFSET L0237
  49.     CMP    AL,'+'
  50.     JZ    L0271
  51.     DEC    DI
  52.     CMP    AL,'-'
  53.     JNZ    L0292
  54. L0271:    MOV    BYTE PTR L0235,0FFH
  55.     LODSB
  56.     AND    AL,0DFH
  57.     MOV    BX,OFFSET L020B
  58.     MOV    CX,4
  59. L027F:    CMP    AL,[BX]
  60.     JZ    L028B
  61.     INC    BX
  62.     LOOP    L027F
  63.     MOV    DX,OFFSET L01D6
  64.     JMP    SHORT    L0247
  65. L028B:    MOV    AL,[BX+4]
  66.     OR    [DI],AL
  67.     JMP    SHORT    L0251
  68. L0292:    NOT    BYTE PTR L0236
  69.     MOV    L0238,SI
  70.     DEC    WORD PTR L0238
  71. L029E:    LODSB
  72.     MOV    DI,OFFSET L0205
  73.     MOV    CX,6
  74.     REPNZ    SCASB
  75.     JNZ    L029E
  76.     DEC    SI
  77.     MOV    BYTE PTR [SI],0
  78.     MOV    CX,SI
  79.     MOV    SI,L0238
  80.     SUB    CX,SI
  81.     MOV    DI,OFFSET (L0373+43)
  82.     MOV    L023A,DI
  83. L02BC:    LODSB
  84.     STOSB
  85.     CMP    AL,':'
  86.     JZ    L02C6
  87.     CMP    AL,'\'
  88.     JNZ    L02CA
  89. L02C6:    MOV    L023A,DI
  90. L02CA:    LOOP    L02BC
  91.     MOV    DX,OFFSET L0373
  92.     MOV    AH,1AH
  93.     INT    21H
  94.     MOV    DX,L0238
  95.     MOV    CX,1FH
  96.     MOV    AH,4EH
  97. L02DC:    INT    21H
  98.     JNB    L02EE
  99.     CMP    AX,12H
  100.     JNZ    L02E8
  101.     JMP    L0366
  102. L02E8:    MOV    DX,OFFSET L01EB
  103.     JMP    L0247
  104. L02EE:    MOV    SI,OFFSET (L0373+30)
  105.     CMP    BYTE PTR [SI],'.'
  106.     JNZ    L02F4
  107.     JMP    L0361
  108. L02F4:    TEST    BYTE PTR L0235,0FFH
  109.     JZ    L02F8
  110.     MOV    CL,BYTE PTR (L0373+21)
  111.     AND    CL,3FH
  112.     AND    CL,L0236
  113.     OR    CL,L0237
  114.     CMP    CL,BYTE PTR (L0373+21)
  115.     JZ    L0361
  116. L02F8:    MOV    DI,L023A
  117.     MOV    CX,0EH
  118. L0300:    LODSB
  119.     STOSB
  120.     OR    AL,AL
  121.     JZ    L030B
  122.     CALL    L0368
  123.     LOOP    L0300
  124. L030B:    MOV    AL,' '    ;' '
  125.     CALL    L0368
  126.     LOOP    L030B
  127.     MOV    DX,OFFSET (L0373+43)
  128.     MOV    CL,BYTE PTR (L0373+21)
  129.     TEST    BYTE PTR L0235,0FFH
  130.     JZ    L0331
  131.     AND    CL,2FH
  132.     AND    CL,L0236
  133.     OR    CL,L0237
  134.     MOV    AX,4301H
  135.     INT    21H
  136.     MOV    AX,4300H
  137.     INT    21H
  138.     JNB    L0331
  139.     MOV    CL,BYTE PTR (L0373+21)
  140. L0331:    MOV    BL,CL
  141.     SHL    BL,1
  142.     SHL    BL,1
  143.     MOV    CX,6
  144.     MOV    DX,OFFSET L0218
  145. L0345:    PUSH    DX
  146.     SHL    BL,1
  147.     JB    L034D
  148.     MOV    DX,OFFSET L0213
  149. L034D:    MOV    AH,9
  150.     INT    21H
  151.     POP    DX
  152.     ADD    DX,5
  153.     LOOP    L0345
  154.     MOV    AL,CR
  155.     CALL    L0368
  156.     MOV    AL,LF
  157.     CALL    L0368
  158. L0361:    MOV    AH,4FH
  159.     JMP    L02DC
  160. L0366:    INT    20H
  161. L0368:    PUSH    AX
  162.     PUSH    DX
  163.     MOV    DL,AL
  164.     MOV    AH,2
  165.     INT    21H
  166.     POP    DX
  167.     POP    AX
  168.     RET
  169. L0373    DB    0,0,0,0,0
  170. CODE    ENDS
  171.     END    START
  172. 
  173. L0368:    PUSH